It is becoming common for electronic system designers to create designs including both field programmable gate arrays (FPGAs) and one or multiple general purpose or special purpose processors embedded in or attached to the FPGA devices. However, present tools provide little assistance in the overall design flow for both software and hardware components of the system.
Various tools are used to create the hardware and software components of the system. For hardware parts of the system, high-level modeling system (HLMS) based design tools are becoming popular. These tools allow electronic designs to be described, assembled, and debugged at the high-level within a high-level modeling environment (e.g., MATLAB/Simulink and Ptolemy). As an important functionality, once the high-level modeling processing is completed, these HLMS based design tools can automatically translate the high-level models into corresponding low-level hardware implementations.
For software parts of the system, there are many integrated development environments (IDEs) that allow the configuration and generation of simulation models of a software execution platform, as well as the compilation of embedded software programs to be run on the execution platform. One example IDE is the Xilinx Embedded Development Kit (EDK). The EDK tool includes tools required to create, edit, compile, link, load, and debug high-level language code, usually C or C++, for execution on a processor engine or “software execution platform.” In addition, the EDK provides “virtual platform” (or “software execution platform”) simulation models that simulate the embedded processor on which the system software executes.
During the system development process it is desirable to simulate both the hardware parts of the system and the software parts of the system simultaneously. However, little support is provided for establishing the mechanisms for controlling the simulation of both parts of the system. A suitable simulation requires exchange of data between the simulated hardware and software components and some level of synchronization between the hardware and software components. Within the framework provided by some present tools, however, it may be left to the designers to create data exchange and synchronization control.
The present invention may address one or more of the above issues.